[BCB] Jak w prosty sposób uniemożliwić przeniesienie okna programu poza ekran
Seigba
No może nie jest to zupełnie tak jak napisałem w temacie, bo okienko będzie można wynieś za ekran, jednak po pewnym czase wróci na jakieś współrzędne.
Przykład ten jest bardzo prościutki i wymyśiłem :> go przez przypadek przy tworzeniu mojego aktualnego projektu :P
if ( Form1->Left + Form1->Width > Screen->Width ) // jeśli okno położone poza ekranem ( x + szerokosc formy > szer. ekranu ( to
Form1->Left = Screen->Width - Form1->Width; // ustaw na krawędzi ekranu (oś x)
if ( Form1->Top + Form1->Height > Screen->Height ) // jeśli okno położone poza ekranem ( y wysokosc formy > wys. ekranu ( to
Form1->Top = Screen->Height - Form1->Height - 25; // ustaw na krawędzi ekranu (os y)
if ( Form1->Top < 0 ) // jesli wieksze niz wys ekranu
Form1->Top = 0; // ustaw na krawedzi
if ( Form1->Left < 0 ) // to samo tylko ze os x
Form1->Left = 0;
// to idzie pod timera oczywiscie ! (ja polecam interval 1000, bo jak jest mniejszy to sie okno nie zdarza odmalowywac ;) a jak wikesze to zas za wolno
Mysle, ze sie komus sprzyda kawalek tego banalnego kodu. Jak co, to ktos to wyrzuci :P
A nie lepiej przechwycić WM_WINDOWPOSCHANGED? Wówczas f-cja zostanie wykonana tylko wtedy, kiedy okno zostanie przesunięte. Pomijając to, ciekawym sposobem na "przesunięcie" okna, aby było ono widoczne jest użycie w BCB funkcji MakeFullyVisible (szczegoly w helpie).
eee co tam po znajomosci dam ci 5 :P
ja tu daje tylko rade jak to zrobić, a wsadzić se moezcie do jakiegokolwiek zdarzenia :> Do on_move chyba faktycznie bedzie najlepiej
on_move np. ?
To spróbuj dać pod inne zdarzenie :>
pod timera? a nie lepiej jakiś komunikat obsłużyć, albo co?
jak dla mnie bezużyteczne...
dużą większość aplikacji da się wyciągnąć poza ekran... (jak np. FireFox na którym to teraz piszę :] ).